home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
IRIX 6.2 Development Libraries
/
SGI IRIX 6.2 Development Libraries.iso
/
dist
/
complib.idb
/
usr
/
share
/
catman
/
p_man
/
cat3
/
complib
/
CSVDC.z
/
CSVDC
Wrap
Text File
|
1996-03-14
|
4KB
|
133 lines
CCCCSSSSVVVVDDDDCCCC((((3333FFFF)))) CCCCSSSSVVVVDDDDCCCC((((3333FFFF))))
NNNNAAAAMMMMEEEE
CSVDC - CSVDC is a subroutine to reduce a complex NxP matrix X by
unitary transformations U and V to diagonal form. The diagonal elements
S(I) are the singular values of X. The columns of U are the
corresponding left singular vectors, and the columns of V the right
singular vectors.
SSSSYYYYNNNNOOOOPPPPSSSSYYYYSSSS
SUBROUTINE CSVDC(X,LDX,N,P,S,E,U,LDU,V,LDV,WORK,JOB,INFO)
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
On Entry
XXXX COMPLEX(LDX,P), where LDX .GE. N.
X contains the matrix whose singular value
decomposition is to be computed. X is
destroyed by CSVDC.
LLLLDDDDXXXX INTEGER.
LDX is the leading dimension of the array X.
NNNN INTEGER.
N is the number of columns of the matrix X.
PPPP INTEGER.
P is the number of rows of the matrix X.
LLLLDDDDUUUU INTEGER.
LDU is the leading dimension of the array U
(see below).
LLLLDDDDVVVV INTEGER.
LDV is the leading dimension of the array V
(see below).
WWWWOOOORRRRKKKK COMPLEX(N).
WORK is a scratch array.
JJJJOOOOBBBB INTEGER.
JOB controls the computation of the singular
vectors. It has the decimal expansion AB
with the following meaning
A .EQ. 0 Do not compute the left singular
vectors.
A .EQ. 1 Return the N left singular vectors
in U.
A .GE. 2 Return the first MIN(N,P)
left singular vectors in U.
B .EQ. 0 Do not compute the right singular
vectors.
B .EQ. 1 Return the right singular vectors
PPPPaaaaggggeeee 1111
CCCCSSSSVVVVDDDDCCCC((((3333FFFF)))) CCCCSSSSVVVVDDDDCCCC((((3333FFFF))))
in V. On Return
SSSS COMPLEX(MM), where MM = MIN(N+1,P).
The first MIN(N,P) entries of S contain the
singular values of X arranged in descending
order of magnitude.
EEEE COMPLEX(P).
E ordinarily contains zeros. However see the
discussion of INFO for exceptions.
UUUU COMPLEX(LDU,K), where LDU .GE. N. If JOBA .EQ. 1
then K .EQ. N. If JOBA .GE. 2 then
K .EQ. MIN(N,P).
U contains the matrix of right singular vectors.
U is not referenced if JOBA .EQ. 0. If N .LE. P
or if JOBA .GT. 2, then U may be identified with X
in the subroutine call.
VVVV COMPLEX(LDV,P), where LDV .GE. P.
V contains the matrix of right singular vectors.
V is not referenced if JOB .EQ. 0. If P .LE. N,
then V may be identified with X in the
subroutine call.
IIIINNNNFFFFOOOO INTEGER.
The singular values (and their corresponding
singular vectors) S(INFO+1),S(INFO+2),...,S(M)
are correct (here M=MIN(N,P)). Thus if
INFO.EQ. 0, all the singular values and their
vectors are correct. In any event, the matrix
B = CTRANS(U)*X*V is the bidiagonal matrix
with the elements of S on its diagonal and the
elements of E on its super-diagonal (CTRANS(U)
is the conjugate-transpose of U). Thus the
singular values of X and B are the same. LINPACK. This version dated
03/19/79 . Stewart, G. W., University of Maryland, Argonne National Lab.
CCCCSSSSVVVVDDDDCCCC uses the following functions and subprograms. External CSROT BLAS
CAXPY,CDOTC,CSCAL,CSWAP,SCNRM2,SROTG Fortran ABS,AIMAG,AMAX1,CABS,CMPLX
Fortran CONJG,MAX0,MIN0,MOD,REAL,SQRT
PPPPaaaaggggeeee 2222